package org.my.spring.agent.mcp.playwright.utils;

import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
import org.my.spring.agent.mcp.core.utils.PlaywrightUtil;
import org.springframework.util.ObjectUtils;

import java.util.List;

/**
 * Playwright浏览器工具类
 * 提供浏览器上下文和页面实例的获取与管理功能
 * 封装了PlaywrightUtil的缓存机制，简化浏览器资源访问
 */
public class AutoWebUtil {
    /**
     * 获取浏览器上下文
     * 从缓存中获取指定用户会话的浏览器实例，并返回其第一个上下文
     *
     * @param key 用户会话标识
     * @return 浏览器上下文实例
     */
    public static BrowserContext getBrowserContext(String key) {
        return PlaywrightUtil.getCacheBrowser(key).contexts().get(0);
    }

    /**
     * 获取浏览器页面
     * 获取指定用户会话的当前页面，若不存在则创建新页面
     *
     * @param key 用户会话标识
     * @return 浏览器页面实例
     */
    public static Page getBrowserPage(String key) {
        BrowserContext browserContext = getBrowserContext(key);
        List<Page> pages = browserContext.pages();
        return ObjectUtils.isEmpty(pages) ? browserContext.newPage() : pages.get(0);
    }
}
